package com.todod.common.util;

import java.io.File;
import java.io.IOException;
import java.net.ConnectException;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;

public class Doc2PdfUtil {

	// 使用openoffice 将word格式的文件转换为pdf格式
	public static void word2Pdf(String srcPath, String desPath) {
		// 源文件目录
		File inputFile = new File(srcPath);
		if (!inputFile.exists()) {
			System.out.println("源文件不存在！");
			return;
		}
		// 输出文件目录
		File outputFile = new File(desPath);
		if (!outputFile.getParentFile().exists()) {
			System.out.println("转换文件不存在！");
			outputFile.getParentFile().exists();
		}
		try {
//			// 调用openoffice服务线程
//			String command = "C:/Program Files (x86)/OpenOffice 4/program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
//			String command = "/opt/openoffice4/program/soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
//			Process p = Runtime.getRuntime().exec(command);

			// 连接openoffice服务
			OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
			connection.connect();

			// 转换word到pdf
			// 之前使用这种方式
			// DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
			// 改成下面这种方式之后问题解决
			DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
			converter.convert(inputFile, outputFile);

			// 关闭连接
			connection.disconnect();

			// 关闭进程
//			p.destroy();
			System.out.println("转换完成！");
		} catch (ConnectException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 测试main方法
	 * 
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		word2Pdf("C:\\Users\\Administrator\\Desktop\\tianjin\\yangli\\周报20190322.doc",
				"C:\\Users\\Administrator\\Desktop\\tianjin\\yangli\\周报20190322.pdf");

	}
}
